package com.jt.system.dao;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.jt.system.pojo.User;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;

import java.util.List;

@Mapper
public interface UserMapper extends BaseMapper<User> {
    /***
     * 基于用户名查询用户信息
     * @param username
     * @return
     */
    @Select("select id,username,password,status "+
            "from tb_users "+
            "where username=#{username}")
    /****
     * 基于用户id查询用户权限。涉及到的表有：
     * 1.tb_user_roles 用户角色关系表，可以在此表中基于用户id找到用户角色
     * 2.tb_role_menus 角色菜单关系表，可以基于角色id找到菜单id
     * 3.tb_menus菜单表，菜单为资源的外在表现形式，在此表中可以基于菜单id找到权限标识
     * 基于如上三张表获取用户权限，有什么解决方案
     * 方案1：三次单表查询
     * 方案2：嵌套查询
     * 方案3：多表查询
     */
    User selectUserByUsername(String username);
    @Select("SELECT distinct m.permission FROM tb_user_roles ur\n" +
            "    LEFT JOIN tb_role_menus rm ON ur.role_id=rm.role_id\n" +
            "    LEFT JOIN tb_menus m  ON rm.menu_id=m.id WHERE ur.user_id=#{userId}")
    List<String> selectUserPermissions(Long userId);
}
